package io.sloeber.core;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.SWTError;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.browser.ProgressEvent;
import org.eclipse.swt.browser.ProgressListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.PlatformUI;
import org.osgi.framework.FrameworkUtil;
public class PleaseHelp extends Dialog {
public Browser browser = null;
public PleaseHelp ph;
private static String myhelpLocation;
public PleaseHelp(Shell parent) {
super(parent);
this.ph = this;
}
@Override
protected Control createContents(Composite parent) {
GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 3;
parent.setLayout(gridLayout);
try {
this.browser = new Browser(parent, SWT.NONE);
} catch (SWTError e) {
System.out.println("Could not instantiate Browser: " + e.getMessage()); //$NON-NLS-1$
}
GridData data = new GridData();
data.horizontalAlignment = GridData.FILL;
data.verticalAlignment = GridData.FILL;
data.horizontalSpan = 3;
data.grabExcessHorizontalSpace = true;
data.grabExcessVerticalSpace = true;
this.browser.setLayoutData(data);
this.browser.addProgressListener(new ProgressListener() {
@Override
public void changed(ProgressEvent event) {
// I'm not interested in change
}
@Override
public void completed(ProgressEvent event) {
PleaseHelp.this.ph.setBlockOnOpen(false);
PleaseHelp.this.ph.open();
}
});
this.buttonBar = createButtonBar(parent);
org.osgi.framework.Version version = FrameworkUtil.getBundle(getClass()).getVersion();
String url = myhelpLocation + "?os=" + Platform.getOS(); //$NON-NLS-1$
url += "&arch=" + Platform.getOSArch(); //$NON-NLS-1$
url += "&majorVersion=" + version.getMajor(); //$NON-NLS-1$
url += "&minorVersion=" + version.getMinor(); //$NON-NLS-1$
url += "µVersion=" + version.getMicro(); //$NON-NLS-1$
url += "&qualifierVersion=" + version.getQualifier(); //$NON-NLS-1$
this.browser.setUrl(url);
return parent;
}
/**
* Static helper function to popup the help jantje page
*
*/
static void doHelp(String helpLocation) {
myhelpLocation = helpLocation;
PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
@Override
public void run() {
Shell activeShell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
new PleaseHelp(activeShell).create();
}
});
}
@Override
protected Point getInitialSize() {
return this.getShell().computeSize(SWT.MAX, SWT.MAX, true);
}
}